import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.Frame;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextPane;

import ambientes.DiagramaSequenciaInterface;
import ambientes.FormulaInterface;
import ambientes.PrincipioFundamentalContagemInterface;
import ambientes.PrincipioFundamentalContagemTabelaInterface;

public class AnaliseCombinatoria extends JApplet {
	public AnaliseCombinatoria() {
		getContentPane().setBackground(Color.WHITE);
	}

	private static final long serialVersionUID = 1L;

	static JFrame frame = new JFrame();

	JTabbedPane tabbedPane = new JTabbedPane();
	
	DiagramaSequenciaInterface diagramaSequencia = new DiagramaSequenciaInterface();
	PrincipioFundamentalContagemInterface multi = new PrincipioFundamentalContagemInterface();
	PrincipioFundamentalContagemTabelaInterface multiTabela = new PrincipioFundamentalContagemTabelaInterface();
	PrincipioFundamentalContagemTabelaInterface multiTabela2= new PrincipioFundamentalContagemTabelaInterface();
	FormulaInterface formula = new FormulaInterface();
	
	public void init() {
		this.setSize(980, 650);

		tabbedPane.setBounds(0, 0, 980, 650);

		tabbedPane.addTab("1 - Diagrama de Sequência", diagramaSequencia);
		tabbedPane.addTab("2 - Princípio da Contagem", multi);
		tabbedPane.addTab("3 - Exercícios de fixação", multiTabela);
		tabbedPane.addTab("4 - Fórmula do Arranjo", formula);
		tabbedPane.addTab("5 - Exercícios de fixação", multiTabela2);

		tabbedPane.addMouseListener(new MouseAdapter() {

			public void mouseClicked(MouseEvent e) {
				Frame frame = new JFrame();
				JTextPane txtpnEnunciado = new JTextPane();
				txtpnEnunciado.setContentType("text/html");
				txtpnEnunciado.setFont(new Font("Dialog", Font.PLAIN, 12));
				txtpnEnunciado.setEditable(false);
				txtpnEnunciado.setBackground(new Color(238, 238, 238, 238));

				if (e.getSource() instanceof JTabbedPane) {
					JTabbedPane pane = (JTabbedPane) e.getSource();

					if (pane.getSelectedIndex() == 2) {
						Component cp[] = multiTabela.getPanel().getComponents();
						if (multi.getPanelResposta().isVisible() == false || multi.getValueResposta() != 12) {
							txtpnEnunciado
									.setText("Resolva o exercício 2 primeiro");
							JOptionPane
									.showMessageDialog(frame, txtpnEnunciado);
							for(int k=0; k < cp.length; k++)
								cp[k].setEnabled(false);
						} else {
							for(int k=0; k < cp.length; k++)
								cp[k].setEnabled(true);
						}
						
					}else if (pane.getSelectedIndex() == 4) {
						Component cp[] = multiTabela2.getPanel().getComponents();
						if (formula.getPanelResposta().isVisible() == false || formula.getValueResposta() != 12) {
							for(int k=0; k < cp.length; k++)
									cp[k].setEnabled(false);
							txtpnEnunciado
									.setText("Resolva o exercício 4 primeiro");
							JOptionPane
									.showMessageDialog(frame, txtpnEnunciado);
						} else {
							for(int k=0; k < cp.length; k++)
								cp[k].setEnabled(true);
						}
					}
				}
			}

		});
		Container cp = this.getContentPane();
		getContentPane().setLayout(null);
		cp.add(tabbedPane);
	}

	public static void main(String[] args) {
		run(new AnaliseCombinatoria(), 980, 650);
	}

	public static void run(JApplet applet, int width, int height) {

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().add(applet);
		frame.setSize(width, height);
		applet.init();
		applet.start();
		frame.setVisible(true);
	}
}
